package org.villacoapa.censo.web.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.villacoapa.censo.dao.Bautizo;
import org.villacoapa.censo.dao.Cargo;
import org.villacoapa.censo.dao.Delegacion;
import org.villacoapa.censo.dao.Departamento;
import org.villacoapa.censo.dao.Estado;
import org.villacoapa.censo.dao.EstadoCivil;
import org.villacoapa.censo.dao.Familia;
import org.villacoapa.censo.dao.Miembro;
import org.villacoapa.censo.dao.MiembroCargoDeseado;
import org.villacoapa.censo.dao.MiembroCargoDeseadoId;
import org.villacoapa.censo.dao.MiembroCargoLlevado;
import org.villacoapa.censo.dao.MiembroSubarea;
import org.villacoapa.censo.dao.Ocupacion;
import org.villacoapa.censo.dao.OtraFeligrecia;
import org.villacoapa.censo.dao.Padecimiento;
import org.villacoapa.censo.dao.PadecimientosMiembro;
import org.villacoapa.censo.dao.PosicionCargo;
import org.villacoapa.censo.dao.Subarea;
import org.villacoapa.censo.web.dto.BautizoDTO;
import org.villacoapa.censo.web.dto.CargoDTO;
import org.villacoapa.censo.web.dto.DelegacionDTO;
import org.villacoapa.censo.web.dto.DepartamentoDTO;
import org.villacoapa.censo.web.dto.EstadoCivilDTO;
import org.villacoapa.censo.web.dto.EstadoDTO;
import org.villacoapa.censo.web.dto.FamiliaDTO;
import org.villacoapa.censo.web.dto.MiembroCargoLlevadoDTO;
import org.villacoapa.censo.web.dto.MiembroDTO;
import org.villacoapa.censo.web.dto.MiembroMinimalDTO;
import org.villacoapa.censo.web.dto.OcupacionDTO;
import org.villacoapa.censo.web.dto.OtraFeligreciaDTO;
import org.villacoapa.censo.web.dto.PadecimientoDTO;
import org.villacoapa.censo.web.dto.PosicionCargoDTO;
import org.villacoapa.censo.web.dto.SubareaDTO;

import com.sun.org.apache.bcel.internal.generic.GETSTATIC;

public class DTOUtil {
	
	
	public static List getEstadoDTOs(List<Estado> lst){
		List<EstadoDTO> lstResult = new ArrayList<EstadoDTO>();
		EstadoDTO edoDTO = null;
		for (Estado edo : lst) {
			edoDTO = new EstadoDTO();
			edoDTO.setIdEstado(edo.getIdEstado());
			edoDTO.setEstado(edo.getEstado());
			lstResult.add(edoDTO);
		}
		return lstResult;
	}
	
	public static List getEstadoCivilDTOs(List<EstadoCivil> lst){
		List<EstadoCivilDTO> lstResult = new ArrayList<EstadoCivilDTO>();
		EstadoCivilDTO edoDTO = null;
		for (EstadoCivil edo : lst) {
			edoDTO = new EstadoCivilDTO();
			edoDTO.setIdEstadoCivil(edo.getIdEstadoCivil());
			edoDTO.setDescripcion(edo.getDescripcion());
			lstResult.add(edoDTO);
		}
		return lstResult;
	}
	
	public static List getDelegacionDTOs(List<Delegacion> lst){
		List<DelegacionDTO> lstResult = new ArrayList<DelegacionDTO>();
		DelegacionDTO objDTO = null;
		for (Delegacion obj : lst) {
			objDTO = new DelegacionDTO();
			objDTO.setIdDelegacion(obj.getIdDelegacion());
			objDTO.setNombreDelegacion(obj.getNombreDelegacion());
			lstResult.add(objDTO);
		}
		return lstResult;
	}
	
	public static List getFamailiaDTOs(List<Familia> lst){
		List<FamiliaDTO> lstResult = new ArrayList<FamiliaDTO>();
		FamiliaDTO objDTO = null;
		for (Familia obj : lst) {
			objDTO = new FamiliaDTO();
			objDTO.setIdFamilia(obj.getIdFamilia());
			objDTO.setApellido1(obj.getApellido1().toUpperCase());
			objDTO.setApellido2(obj.getApellido2().toUpperCase());
			lstResult.add(objDTO);
		}
		return lstResult;
	}
	
	public static List getOcupacionDTOs(List<Ocupacion> lst){
		List<OcupacionDTO> lstResult = new ArrayList<OcupacionDTO>();
		OcupacionDTO objDTO = null;
		for (Ocupacion obj : lst) {
			objDTO = new OcupacionDTO();
			objDTO.setIdOcupacion(obj.getIdOcupacion());
			objDTO.setDescripcion(obj.getDescripcion());
			lstResult.add(objDTO);
		}
		return lstResult;
	}
	
	public static List getPAdecimientoDTOs(List<PadecimientosMiembro> lst){
		List<PadecimientoDTO> lstResult = new ArrayList<PadecimientoDTO>();
		PadecimientoDTO objDTO = null;
		for (PadecimientosMiembro obj : lst) {
			objDTO = new PadecimientoDTO();
			objDTO.setIdPadecimiento(obj.getPadecimiento().getIdPadecimiento());
			objDTO.setDescripcion(obj.getPadecimiento().getDescripcion());
			lstResult.add(objDTO);
		}
		return lstResult;
	}
	
	public static List getSubareaDTOs(List<MiembroSubarea> lst){
		List<SubareaDTO> lstResult = new ArrayList<SubareaDTO>();
		SubareaDTO objDTO = null;
		for (MiembroSubarea obj : lst) {
			objDTO = new SubareaDTO();
			objDTO.setIdSubarea(obj.getSubarea().getIdSubarea());
			objDTO.setDescripcion(obj.getSubarea().getDescripcion());
			lstResult.add(objDTO);
		}
		return lstResult;
	}
	
	public static List getMiembrosMinimalDTOs(List<Miembro> lst){
		List<MiembroMinimalDTO> lstResult = new ArrayList<MiembroMinimalDTO>();
		MiembroMinimalDTO objDTO = null;
		for (Miembro obj : lst) {
			objDTO = new MiembroMinimalDTO();
			objDTO.setIdMiembro(obj.getIdMiembro());
			objDTO.setNombre(obj.getNombre().toUpperCase());
			objDTO.setApellidoPaterno(obj.getApellidoPaterno().toUpperCase());
			objDTO.setApellidoMaterno(obj.getApellidoMaterno().toUpperCase());
			objDTO.setFoto(obj.getFoto());
			lstResult.add(objDTO);
		}
		return lstResult;
	}
	
	public static List<MiembroCargoLlevadoDTO> getMiembrosCargoLlevadoDTOs(List<MiembroCargoLlevado> lst){
		List<MiembroCargoLlevadoDTO> lstResult = new ArrayList<MiembroCargoLlevadoDTO>();
		MiembroCargoLlevadoDTO dto= new MiembroCargoLlevadoDTO();
		for (MiembroCargoLlevado obj : lst) {
			dto.setCargo(getCargoDTO(obj.getCargo()));
			dto.setDesde(obj.getDesde());
			dto.setDistrito(obj.getDistrito());
			dto.setEstado(obj.getEstado());
			dto.setHasta(obj.getHasta());
			dto.setIdMiembroCargo(obj.getIdMiembroCargo());
			dto.setIglesia(obj.getIglesia());
			dto.setPais(obj.getPais());
			lstResult.add(dto);
		}
		return lstResult;
	}
	
	public static CargoDTO getCargoDTO(Cargo cargo){
		CargoDTO dto = new CargoDTO();
		dto.setDepartamento(getDepartamentoDTO(cargo.getDepartamento()));
		dto.setIdCargo(cargo.getIdCargo());
		dto.setPosicionCargo(getPosicionCargoDTO(cargo.getPosicionCargo()));
		return dto;
	}
	
	public static DepartamentoDTO getDepartamentoDTO(Departamento depto){
		DepartamentoDTO dto = new DepartamentoDTO();
		dto.setIdDepartamento(depto.getIdDepartamento());
		dto.setNombreDepartamento(depto.getNombreDepartamento());
		return dto;
	}
	public static PosicionCargoDTO getPosicionCargoDTO(PosicionCargo pos){
		PosicionCargoDTO dto = new PosicionCargoDTO();
		dto.setIdPosicion(pos.getIdPosicion());
		dto.setNombre(pos.getNombre());
		return dto;
	}
	
	public static List<OtraFeligreciaDTO> getOtraFeligresiaDTOs(List<OtraFeligrecia> lst){
		List<OtraFeligreciaDTO> lstResult = new ArrayList<OtraFeligreciaDTO>();
		OtraFeligreciaDTO dto= new OtraFeligreciaDTO();
		for (OtraFeligrecia obj : lst) {
			dto.setAnioFin(obj.getAnioFin());
			dto.setAnioInicio(obj.getAnioInicio());
			dto.setDistrito(obj.getDistrito());
			dto.setEstado(obj.getEstado());
			dto.setIdFeligrecia(obj.getIdFeligrecia());
			dto.setIglesia(obj.getIglesia());
			dto.setPais(obj.getPais());
			lstResult.add(dto);
		}
		return lstResult;
	}
	
	public static BautizoDTO getBautizoDTOs(List<Bautizo> lst){
		BautizoDTO dto= new BautizoDTO();
		for (Bautizo obj : lst) {
			dto.setDistritoBautizo(obj.getDistritoBautizo());
			dto.setEstado(obj.getEstado());
			dto.setFechaBautizo(obj.getFechaBautizo());
			dto.setIdBautizo(obj.getIdBautizo());
			dto.setIglesiaBautizo(obj.getIglesiaBautizo());
			dto.setPaisBautizo(obj.getPaisBautizo());
			dto.setPastorBautizo(obj.getPastorBautizo());
		}
		return dto;
	}
	
	public static MiembroDTO getMiembroDTO(Miembro m){
		MiembroDTO dto = new MiembroDTO();
		dto.setApellidoMaterno(m.getApellidoMaterno());
		dto.setApellidoPaterno(m.getApellidoPaterno());
		dto.setCalleNumero(m.getCalleNumero());
		dto.setCarrera(m.getCarrera());
		dto.setColonia(m.getColonia());
		dto.setComentario(m.getComentario());
		dto.setCp(m.getCp());
		ArrayList arDelegacion = new ArrayList();
		arDelegacion.add(m.getDelegacion());
		dto.setDelegacion((DelegacionDTO)getDelegacionDTOs(arDelegacion).get(0));
		dto.setEmail(m.getEmail());
		dto.setEmpresa(m.getEmpresa());
		ArrayList arEdoCivil = new ArrayList();
		arEdoCivil.add(m.getEstadoCivil());
		dto.setEstadoCivil((EstadoCivilDTO)getEstadoCivilDTOs(arEdoCivil).get(0));
		ArrayList arFamilia = new ArrayList();
		arFamilia.add(m.getFamilia());
		dto.setFamilia((FamiliaDTO)getFamailiaDTOs(arFamilia).get(0));
		dto.setFechaDeNacimiento(m.getFechaDeNacimiento());
		dto.setFoto(m.getFoto());
		dto.setHabilidades(m.getHabilidades());
		dto.setIdEstado(m.getIdEstado());
		dto.setIdEstatus(m.getIdEstatus());
		dto.setIdMiembro(m.getIdMiembro());
		dto.setIngresos(m.getIngresos());
		List<MiembroCargoLlevadoDTO> lstCargoLlevado = getMiembrosCargoLlevadoDTOs(new ArrayList(m.getMiembroCargoLlevados()));
		dto.setMiembroCargoLlevados(lstCargoLlevado);
		dto.setMiembroVcDesde(m.getMiembroVcDesde());
		dto.setNombre(m.getNombre());
		ArrayList arOcupacion = new ArrayList();
		arOcupacion.add(m.getOcupacion());
		dto.setOcupacion((OcupacionDTO)getOcupacionDTOs(arOcupacion).get(0));
		dto.setSexo(m.getSexo());
		dto.setSysdate(m.getSysdate());
		dto.setTelefonoCasa(m.getTelefonoCasa());
		dto.setTelefonoCelular(m.getTelefonoCelular());
		List<PadecimientoDTO> lstPade = getPAdecimientoDTOs(new ArrayList(m.getPadecimientosMiembros()));
		dto.setPadecimientosMiembros(lstPade);
		List<SubareaDTO> lstSubareas = getSubareaDTOs(new ArrayList(m.getMiembroSubareas()));
		dto.setMiembroSubareas(lstSubareas);
		BautizoDTO bautizoDTO = getBautizoDTOs(new ArrayList(m.getBautizos()));
		dto.setBautizo(bautizoDTO);
		
//		ArrayList<MiembroCargoDeseado> arCargoDeseado = new ArrayList<MiembroCargoDeseado>(m.getMiembroCargoDeseados());
//		for (MiembroCargoDeseado miembroCargoDeseado : m.getMiembroCargoDeseados().iterator()) {
//			
//		}
//		dto.setMiembroCargoDeseadosId(m.getmie)
		return dto;
		
	}
	
	

}
